﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace _3D_FileExplorer
{
     public class GraphicalNode
    {
        private int branchLevel; // level of directory tree
        private Vector3 bbParametersPlus; //positive size of bounding box
        private Vector3 bbParametersMinus; //negativ size of bounding box
        private int dirCount; //number of dirs in this directory
        public int filesCount; //number of files in this directory
        private float radius;
        private Vector3 origin;
        public Matrix rotation = Matrix.Identity;
        public Matrix translation = Matrix.Identity;
        private float height;
        public string direction;
        public float cubeSide;
        private List<GraphicalNode> branch = new List<GraphicalNode>();
        private string name; //name for example image.jpg
        private bool dir; // is this object directory<
        float weight;
        string type;
        string shortname;
        string description;
        public long id;
       
        public GraphicalNode(string name,float weight,string type,string shortname,string description,long id)
        {
            this.id = id;
            this.weight = weight;
                this.name = name;
                this.dir = false;
                this.type = type;
                this.shortname = shortname;
                this.description = description;
        }
        public GraphicalNode(string name, bool dir, float weight, string shortname, string description,long id)
        {
            this.id = id;
            this.name = name;
            this.dir = dir;
            this.weight = weight;
            this.shortname = shortname;
            this.branch = new List<GraphicalNode>();
            this.description = description;
        }

        public int Branchlevel
        {
            get { return branchLevel; }
            set { branchLevel = value; }
        }
        public Vector3 BbParametersPlus
        {
            get { return bbParametersPlus; }
            set { bbParametersPlus = value; }
        }
        public Vector3 BbParametersMinus
        {
            get { return bbParametersMinus; }
            set { bbParametersMinus = value; }
        }
        public int DirCount
        {
            get { return dirCount; }
            set { dirCount = value; }
        }
        public int FilesCount
        {
            get { return filesCount; }
            set { filesCount = value; }
        }
        public float Radius
        {
            get { return radius; }
            set { radius = value; }
        }
        public Vector3 Origin
        {
            get { return origin; }
            set { origin = value; }
        }
        public float Height
        {
            get { return height; }
            set { height = value; }
        }
        public virtual List<GraphicalNode> Branch
        {
            get { return branch; }
            set { branch = new List<GraphicalNode>(); }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public bool Dir
        {
            get { return dir; }
            set { dir = value; }
        }
        public string Type
        {
            get { return type; }
            set { type = value; }
        }
        public string ShortName
        {
            get { return shortname; }
            set { shortname = value; }
        }
        public string Description
        {
            get { return description; }
            set { description = value; }
        }
        public float Weight
        {
            get { return weight; }
            set { weight = value; }
        }
    }
}
